در اختیار داشتن ابزار مناسب برای تصور کردن داده‌های کمپانی نکته‌ای کلیدی در به دست آوردن یک بیزنس مدرن است. در این مقاله از اگزونت به شما نشان می‌دهیم که چگونه یک خوشه‌ی الاستیک سرچ مستقر کنید تا بتواند به عنوان پایه و اساس کار شما عمل کند.

الاستیک سرچ یک موتور جستجو و تحلیلگر بسیار قدرتمند است. با در اختیار داشتن این ابزار، شما می‌توانید پایه و اساس درست را برای تصور حجم عظیمی از داده‌ها دارید.

اما زمانی که شما شروع به تعیین اندازه و مقیاس الاستیک سرچ برای رویارویی با حجم عظیم داده‌ها می‌کنید، نیاز خواهید داشت که تعداد بیش از یک سرور را به کار بگیرید. و زمانی که شما شروع به افزایش این مقیاس برای نیاز‌های سطح بالاتر می‌کنید، یک سرور واحد به هیچ عنوان جواب گوی کار نیست.

پس چه باید کرد؟ قطعا باید یک خوشه‌ی الاستیک سرچ بنا کرد. در اینجا ما به شما آموزش می‌دهیم که چگونه این کار را انجام دهید.

 

به چه مواردی نیاز پیدا خواهید کرد؟

در این مقاله ما به شما دو نمونه از سرور اوبونتو 20.04 را نشان می‌دهیم. اما شما می‌توانید آن را به هر اندازه‌ی Cluster که نیاز دارید تعمیم دهید.

علاوه بر دو نمونه‌ی اوبونتو سرور، شما همچنین به یک کاربر با مزایای sudo نیز نیاز خواهید داشت. تمام چیزی که مورد نیاز است همین موارد می‌باشد.

 

چگونه Java را نصب کنیم؟

شما نیاز خواهید داشت حداقل Java 8 را بر روی تمام سرورها نصب کنید، در نتیجه ما باید JRE پیشفرض را با فرمان زیر نصب کنیم:

sudo apt-get install default-jre -y

به محض اینکه بر هردوی سیستم‌های تست شما نصب شد، می‌توانیم الاستیک سرچ را نصب کنیم.

 

چگونه الاستیک سرچ را نصب کنیم؟

این کار باید برای هر دوی سیستم‌های تست انجام شود. اول از همه باید الاستیک سرچ GPG را نصب کنید:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add

سپس با فرمان زیر apt-transport-https را نصب کنید:

sudo apt-get install apt-transport-https

با فرمان زیر repository ضروری را اضافه کنید:

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

آخر از همه atp را بروزرسانی کرده و الاستیک سرچ را نصب کنید:

sudo apt-get update

sudo apt-get install elasticsearch -y

الاستیک سرچ را فعال کنید:

sudo systemctl start elasticsearch

sudo systemctl enable elasticsearch

 

چگونه الاستیک سرچ را پیکربندی کنیم؟

این عمل باید بر روی هر دو سرور انجام شود. فقط مطمئن شوید که پیکربندی را برای هر سرور تغییر دهید تا برای هر کدام پیکربندی مناسب خودش انجام شود. در اینجا ما سرور اول را controller-1 و سرور دوم را node-1 نام گذاری می‌کنیم. فایل پیکربندی را با فرمان زیر باز کنید:

sudo nano /etc/elasticsearch/elasticsearch.yml

در این فایل، شما باید خطوطی را تغییر دهید. اول از همه باید کاراکتر # را حذف کنید. تمام عباراتی که باید تغییر کند در لیست زیر به صورت بولد در آمده است:

  • cluster.name: elkcluster
  • node.name: "controller-1"
  • network.host: 192.168.1.80
  • http.port: 9200
  • discovery.zen.ping.unicast.hosts: ["192.168.1.80", "192.168.1.81"]

فایل را ذخیره کرده و آن را ببندید. در هر دو سرور الاستیک سرچ را Restart کنید

sudo systemctl restart elasticsearch

 

چگونه کلاستر را تست کنیم؟

باید به الاستیک سرچ چند دقیقه زمان دهید تا بالا بیاید. سپس با این فرمان می‌توانید آن را تست کنید:

curl -XGET 'http://192.168.1.80:9200/_cluster/state?pretty'

اول از همه از تغییر دادن آی دی دستور بالا اطمینان حاصل کنید تا با آی پی controller و node شما هماهنگ شود.

زمانی که الاستیک سرچ شما د نهایت اجرا شد، باید خروجی طولانی مشابه مورد زیر را ببینید:

{

  "cluster_name" : "monkeypantz",

  "cluster_uuid" : "rGzNNmm_Rteel0Xg3xqw9w",

  "version" : 6,

  "state_uuid" : "WVx5O6Q7SfOqZf_wxaPOKQ",

  "master_node" : "2NI9_pDYS1WvJYQz-XY3KQ",

  "blocks" : { },

  "nodes" : {

    "yV2TBoxVTvKbh7E1ZngpbA" : {

      "name" : "node-1",

      "ephemeral_id" : "pkb3vapLTd2yFLrXO64ENA",

      "transport_address" : "192.168.1.81:9300",

      "attributes" : {

        "ml.machine_memory" : "3137888256",

        "ml.max_open_jobs" : "20",

        "xpack.installed" : "true",

        "ml.enabled" : "true"

      }

    },

زمانی که هر دوی controller و node اجرا شدند، با فرمان زیر کلاستر را تست کنید:

curl -XGET '192.168.1.80:9200/_cluster/health?pretty'

حتما آدرس آی پی را با آدرس آی پی مورد نظر خود در دستور بالا جایگزین کنید. خروجی برای شما باید مانند زیر باشد:

{

  "cluster_name" : "monkeypantz",

  "status" : "green",

  "timed_out" : false,

  "number_of_nodes" : 2,

  "number_of_data_nodes" : 2,

  "active_primary_shards" : 0,

  "active_shards" : 0,

  "relocating_shards" : 0,

  "initializing_shards" : 0,

  "unassigned_shards" : 0,

  "delayed_unassigned_shards" : 0,

  "number_of_pending_tasks" : 0,

  "number_of_in_flight_fetch" : 0,

  "task_max_waiting_in_queue_millis" : 0,

  "active_shards_percent_as_number" : 100.0

}

خطوط مهمی که باید به یاد داشته باشید شامل موارد زیر است:

"status" : "green",

  "timed_out" : false,

  "number_of_nodes" : 2,

  "number_of_data_nodes" : 2,

همچنین می‌توانید از کنترولر نود را با فرمان زیر چک کنید:

curl -XGET '192.168.1.81:9200/_nodes/?pretty

حتما آدرس آیپی بالا را با الاستیک سرچ نود خود جایگزین کنید. شما همچنین می‌توانید با مرورگر خود این آدرس را اجرا کنید: http://SERVER:9200 (البته عبارت SERVER در واقع آدرس آیپی کنترولر شما باید باشد) نتیجه‌ای که مشاهده می‌کنید باید مانند تصویر زیر باشد